package com.cyber4aiagent.assistant;

import dev.langchain4j.service.MemoryId;
import dev.langchain4j.service.SystemMessage;
import dev.langchain4j.service.UserMessage;
import dev.langchain4j.service.V;
import dev.langchain4j.service.spring.AiService;

import static dev.langchain4j.service.spring.AiServiceWiringMode.EXPLICIT;


/**
 * @author Cyber
 * @date 2025/05/09 10:42
 * @description 隔离聊天记忆功能的 AIService 智能体
 */
@AiService(
        // wiringMode: 标明使用哪个大模型聊天
        wiringMode = EXPLICIT,
        // chatModel: 具体的聊天大模型
        chatModel = "qwenChatModel",
        // chatMemoryProvider: 隔离聊天记忆功能的提供者
        chatMemoryProvider = "chatMemoryProvider",
        // tools: 工具类, 配置工具(Function Calling)
        tools = "calculatorTools"
)
public interface SeparateChatAssistant {

    /**
     * 隔离聊天记忆功能
     *
     * @param memoryId 聊天ID
     * @param message  用户信息
     */
//    @SystemMessage("你是我的好朋友，请用东北话回答问题。今天是{{current_date}}") // 系统消息提示词 prompt
    @SystemMessage(fromResource = "my-prompt-template.txt")
    // 系统消息提示词 prompt 模版配置
    String chat(@MemoryId int memoryId, @UserMessage String message);


    @UserMessage("你是我的好朋友，请用上海话回答问题。今天是{{message}}")
    String chat2(@MemoryId int memoryId, @V("message") String message);

    @SystemMessage(fromResource = "my-prompt-template3.txt")
    String chat3(
            @MemoryId int memoryId,
            @UserMessage String userMessage,
            @V("userName") String userName,
            @V("age") int age
    );
}
